﻿using System.Collections.Generic;
using System.Linq;
using System.Text;
using Deployment.Manager.Configuration.Enum;
using System.Xml.Serialization;
using PSE.Deployment.SetupBase.Configuration;
using PSE.Framework.Common;

namespace Deployment.Manager.Configuration
{
    [XmlInclude(typeof(PSE.Deployment.SetupBase.Configuration.Actions.Copy))]
    [XmlInclude(typeof(PSE.Deployment.SetupBase.Configuration.Actions.CreateShortcut))]
    [XmlInclude(typeof(PSE.Deployment.SetupBase.Configuration.Actions.InstallAssembly))]
    [XmlInclude(typeof(PSE.Deployment.SetupBase.Configuration.Actions.InstallCertificate))]
    [XmlInclude(typeof(PSE.Deployment.SetupBase.Configuration.Actions.InstallWcfService))]
    [XmlInclude(typeof(PSE.Deployment.SetupBase.Configuration.Actions.InstallWindowsService))]
    [XmlInclude(typeof(PSE.Deployment.SetupBase.Configuration.Actions.RegisterComponent))]
    [XmlInclude(typeof(PSE.Deployment.SetupBase.Configuration.Actions.RegisterComponentWin32))]
    [XmlInclude(typeof(PSE.Deployment.SetupBase.Configuration.Actions.UpdateConfig))]
    [XmlInclude(typeof(PSE.Deployment.SetupBase.Configuration.Actions.UpdateWindowsRegistry))]
    [XmlInclude(typeof(PSE.Deployment.SetupBase.Configuration.Actions.InstallMessageQueue))]
    [System.Serializable]
    public class DeployInfo
    {
        public int WorkItemId { get; set; }
        public SystemInfo System { get; set; }
        public Enviroment Environment { get; set; }
        public Release Release { get; set; }
        public List<Branch> Branches { get; set; }
        public BranchType BranchType { get; set; }
        public PlataformType PlataformType { get; set; }
        public BuildType BuildType { get; set; }
        public Version Version { get; set; }
        public string RootPath { get; set; }
        //public string TeamSystemLabel {get;set;}
        public string DefaultInstallPath { get; set; }
        public TeamProject TeamProject { get; set; }


        public DeployInfo()
        {
            this.System = new SystemInfo();
            this.Branches = new List<Branch>();
            this.Release = new Release();
            this.Version = new Version();
            this.TeamProject = new TeamProject();
        }
    }
}
